﻿
#if UNITY_IOS || UNITY_IPHONE

namespace HK.iOS.Editor.PostProcess.Data
{
    /// <summary>
    /// Pbx工程目标Scheme
    /// </summary>
    public enum TargetScheme
    {
        /// <summary>
        /// Unity-iPhone
        /// </summary>
        UnityIPhone = 0x00000001,
        
        /// <summary>
        /// Unity-iPhone Tests
        /// </summary>
        UnityIPhoneTests = 0x00000002,
        
        /// <summary>
        /// UnityFramework
        /// </summary>
        UnityFramework = 0x00000004,
        
        /// <summary>
        /// All
        /// </summary>
        All = UnityIPhone | UnityIPhoneTests | UnityFramework
    }

    /// <summary>
    /// Pbx打包配置方式
    /// </summary>
    public enum PbxBuildConfig
    {
        Debug,
        Release,
        ReleaseForProfiling,
        ReleaseForRunning
    }
    
    /// <summary>
    /// 布尔类型
    /// <para>* Pbx工程或者Plist中设定的布尔类型的值</para>
    /// </summary>
    public enum TxcBool 
    {
        Yes,
        No
    }

    /// <summary>
    /// 接口 : Pbx Build Element
    /// </summary>
    /// <typeparam name="T">Element值类型</typeparam>
    public interface IPbxBuildElements<T>
    {
        /// <summary>
        /// Debug
        /// </summary>
        T Debug { get; }
        
        /// <summary>
        /// Release
        /// </summary>
        T Release { get; }
		
        /// <summary>
        /// ReleaseForProfiling
        /// </summary>
        T ReleaseForProfiling { get; }
		
        /// <summary>
        /// ReleaseForRunning
        /// </summary>
        T ReleaseForRunning { get; }

        /// <summary>
        /// 更新信息
        /// </summary>
        /// <param name="iDebug">值 - Debug</param>
        /// <param name="iRelease">值 - Release</param>
        /// <param name="iReleaseForProfiling">值 - ReleaseForProfiling</param>
        /// <param name="iReleaseForRunning">值 - ReleaseForRunning</param>
        void UpdateGuids(T iDebug, T iRelease, T iReleaseForProfiling, T iReleaseForRunning);
    }

    /// <summary>
    /// 接口 : Pbx Build Config
    /// </summary>
    public interface IPbxBuildConfig : IPbxBuildElements<string> { }
    
    /// <summary>
    /// 接口 : Pbx Build Scheme
    /// </summary>
    /// <typeparam name="T">Element值类型</typeparam>
    public interface IPbxElementScheme<T> : IPbxBuildElements<T>
    {
        /// <summary>
        /// 目标GUID
        /// </summary>
        string TargetGuid { get; }
    }

    /// <summary>
    /// 接口 : Pbx Build Scheme
    /// </summary>
    public interface IPbxBuildScheme : IPbxElementScheme<string> {}

    /// <summary>
    /// 接口 : Pbx Build Item
    /// </summary>
    /// <typeparam name="T">Element值类型</typeparam>
    public interface IPbxBuildItem<T> : IPbxBuildElements<T>
    {
        /// <summary>
        /// Key
        /// </summary>
        string Key { get; }
    }
    
    /// <summary>
    /// 接口 : Pbx Build Item之Architectures
    /// </summary>
    public interface IPbxBuildArchitectures : IPbxBuildItem<string> {}
    
    /// <summary>
    /// 接口 : Pbx Build Item之Unity Cloud Build FakeToken
    /// </summary>
    public interface IPbxBuildUsymUploadAuthToken : IPbxBuildItem<string> {}
    
    /// <summary>
    /// Pbx工程协议
    /// </summary>
    public interface IPbxProtocol
    {

    }
}

#endif
